-- 缓存kye
local key = KEYS[1]
-- 扣减库存数
local num = tonumber(ARGV[1])
-- 默认库存总数（用户传值）
local defInventory = tonumber(ARGV[2])
-- 库存过期时间（秒）
local timeout = tonumber(ARGV[3])

-- 查询redis中的库存总数
local inventory = redis.call("get", key)

-- redis无库存默认
if not inventory then
    inventory = defInventory;
end

-- 扣减库存
inventory = inventory - num

-- 判断是否超卖
if(inventory < 0)
then
    return false;
end

-- 正常扣库存
redis.call("set", key, inventory)
redis.call("expire", key, timeout)

return true
